package cn.doitedu.day05

import cn.doitedu.day01.utils.SparkUtil
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.1
 * @Created by HANGGE
 * @Description
 */
object C12_转换算子_SortBy {

  def main(args: Array[String]): Unit = {

    val sc = SparkUtil.getSc
     // 分区很多
    val rdd1: RDD[String] = sc.parallelize(List("a", "c", "d", "f", "b") )
    val rdd2: RDD[Int] = sc.parallelize(List(2, 1, 3, 7, 4, 5),1)
    val rdd3 = sc.parallelize(List(("b", 3), ("c", 3), ("a", 11), ("f", 6)) ,1)
    val res1 = rdd1.sortBy(e => e)
    //==>  rdd1.keyBy(e=>e)  =>  (a,a) (c,c)
    //==> sortByKey (a,a) (b,b)  .valus

    val res2 = rdd2.sortBy(e => e )
    val res3 = rdd3.sortBy(e => e._1)
    /**
     * 参数一  排序规则
     * 参数二  排序顺序   true 升序  flase 降序
     * 参数三  结果RDD的分区数
     */
    val res11 = rdd1.sortBy(e => e, false, 1)
   // res11.foreach(println)
    val res13 = rdd3.sortBy{
      case (k,v) => k
    }

    val sorted  = rdd1.sortBy(e => e)
    // collect 行动算子 , 将所有的task结果收集到本地  集合
    // collect 保证收集后结果的排序性
    val ls: Array[String] = sorted.collect()
    println(ls.toList)
  }
}
